Field
The present disclosure relates to techniques for queuing packets in a network switch. More specifically, the present disclosure relates to a network switch with separate virtual output queues for multicast and unicast traffic.
Related Art
High-performance computing systems often include large numbers of servers interconnected by a network switch fabric that is responsible for moving packets among the servers. Each of these servers can run multiple virtual machines (VMs) and associated virtualized applications, and the network packet streams generated by these servers are typically directed to different resources that the VMs and associated applications need to access. Hot spots and associated network congestion frequently arise in such network switch fabrics depending on the traffic patterns of the packet streams and how the switch fabric is configured.
‘Multicast packets’ (which are sometimes referred to as ‘multi-destination packets’ or, when all the output ports are addressed, ‘broadcast packets’), which are sent from a single source to multiple destinations, are a major contributor to such network congestion. Whenever a multicast packet is sent across a network switch fabric, traffic multiplication occurs. For example, a multicast packet entering a switch port is typically replicated to all or a subset of the output ports. As the number of VMs in the network switch fabric increases, this replication greatly reduces the amount of bandwidth that is available to transfer other packets through the switch fabric, thereby adversely affecting the performance of other packet streams. In addition, sequential scheduling of packets to various output ports in the network switch fabric introduces head-of-line blocking.
Hence, what is needed is a technique for communicating a multicast packet through a network switch fabric without adversely affecting other packet streams.